package code.whmmm.util.spring.quartz.util;

import org.quartz.*;
import code.whmmm.util.simple.TimeUtil;

/**
 * <p>Quartz 工具类 ，quartz 版本 2.3.1 </p>
 * 创建时间: 2019年8月14日 13:38:03
 *
 * @author Zero
 */
public class QuartzUtil {

    private QuartzUtil() {
    }

    /**
     * 创建 cron 表达式 对象.
     *
     * @param cron         cron
     * @param triggerName  触发器 名字
     * @param triggerGroup 触发器 组名
     * @param jobName      工作 task 名字
     * @param jobGroup     工作 task 组名
     * @return CronTrigger
     */
    public static CronTrigger createCronTrigger(String cron,
                                                String triggerName, String triggerGroup,
                                                String jobName, String jobGroup
    ) {
        try {


            return TriggerBuilder.newTrigger()
                    .withIdentity(triggerName, triggerGroup)
                    .forJob(jobName, jobGroup)
                    .withSchedule(
                            CronScheduleBuilder.cronSchedule(cron))
                    .build();
          /*
           // 低版本
           return new CronTrigger(
                    triggerName,
                    triggerGroup,
                    jobName,
                    jobGroup,
                    cron
            );*/
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }

    public static JobDetail createJobDetail(Class<? extends Job> clazz, String jobName, String groupName) {
        return JobBuilder.newJob(clazz).
                withIdentity(jobName, groupName).build();
       /*
       // 低版本
       JobDetail jobDetail = new JobDetail();
        jobDetail.setName(jobName);
        jobDetail.setJobClass(clazz);
        jobDetail.setGroup(groupName);

        return jobDetail;*/
    }


    public static String getStartLog() {
        return " 开始：" + TimeUtil.getTimeString();
    }

    public static String getEndLog(Long start) {

        return " 结束: " + TimeUtil.getTimeString() + ",耗时: " + TimeUtil.getConsumeTime(start);
    }

}
